NI TestStand Idea Exchange

Community Browser
Top Authors
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

With the removal of the GAC from TestStand, it's now the user's responsibility to include common .NET assemblies in their source to be leveraged in TestStand.  It would be great if I could go the menu, launch the Nuget Package Manager, download packages from nuget.org (and my local Artifactory repo), and unpack these assemblies into a specified target folder. 

 

While I'm primarily focused on .NET and nuget, the same thing could and should be provided for VI Package Manager and lvlibs, lls, vis, etc.  

Obviously it's not a great idea to have loads of nested conditional steps, but for longer sequences even with only a few nested conditions, I find it hard to find the matching END for example when an if-statement. Sure I can count the number of lines, but I think it would be a lot easier if the "scope line" that indicates the scope would stand out more and become bold or blue (like the selected line)

 

Here's are two mockups (bold line)

 

bold-line.png

 

An alternative indication could be to highlight the ending line of the scope like below.

 

end-highlight.png

 

Having a keyboard shortcut for jumping between beginning and the ending within a scope would also be very helpful!

In Microsoft Visual Studio there's a keyboard shortcut (CTRL + [ ) which toggles the cursor position between the and and beginning of a scope, and it works with all things that encapsulates a scope or a string or expression. e.g. curly braces in code sections, quoted strings etc.

I think it can a be a really good idea to review and give feedback on all Idea exchange.

 

You ask us to give feedback but you don't finish the loop.

 

Some idea are mark as new for many years now...

Currently, you have to choose between these options on each file (and the only indication of the choice is in the sequence file properties dialog).  Both options can be quite useful in the Parallel and Batch Model (of course there isn't much of a difference in the Sequential Model).  Clunky workarounds also exist like using Shared File Globals and having arrays for anything per-execution or using Separate File Globals while putting anything shared in Station Globals or in LabVIEW Functional Globals, but I think native support for both in the same file would be much cleaner and easier.

This could be just having two "FileGlobals" categories in the Variables pane (I prefer this), or it could be a right-click option on each individual File Global.

 

TomOrr0W_1-1729015156875.png

TomOrr0W_0-1729014466032.png

 

I would like to suggest adding a public API to the Sequence Editor in TestStand.

 

Recently, I watched a recording featuring members of the TestStand R&D team, where they explained that users often request various features in the Sequence Editor, even though they already have access to the TS API and TS UI Controls, which allow them to create their own custom user interfaces. Meanwhile, building a custom operating system just to play Heroes of Might and Magic is not standard practice — we buy a fully functional system and run the game on it. Similarly, when writing sequences in TestStand, we purchase a framework along with a ready-made GUI that should provide a comprehensive set of features for creating test sequences. The Sequence Editor is a paid tool, and since users pay for it, it should offer value out-of-the-box without requiring additional development of functionalities that users believe should already be standard.

 

For this reason, I believe that a paid GUI like the Sequence Editor should be enhanced with an API that allows programmatic control of its functionality.

 

Examples of functionalities that interest me:

  1. Managing the Output Messages Pane

    • Programmatically clearing messages.
    • Exporting messages to a file.
    • Opening or hiding the pane.
  2. Managing UI Settings

    • Programmatically loading a saved layout.
    • Dynamically controlling the layout during runtime.
  3. Changing Pane Colors

    • Many users currently complain about the lack of a dark mode in TestStand. A partial dark mode can be achieved by changing the background colors of panes. Most (if not all) panes have a Color property that allows color changes, but for some reason, this doesn’t work in the Sequence Editor (I attempted to achieve this by retrieving references to panes through the Application Manager returned by Engine Internal Options, but unfortunately, without success).

 

These are just examples of features that would be useful to me today. However, long-time TestStand users could likely identify many more ideas for such API. A public API would open the door to much more advanced and personalized use of TestStand, while simultaneously increasing its value for a wide range of users.

 

 

Do you ever write an expression in TestStand with a bunch of parenthesis () and get lost halfway through trying to figure out which pairs are open and which are closed.  Well, I do.  Every Day.  And I spend accumulated hours a week just trying to keep track of which ) goes with which (.  If I'm lucky I can look for a little red item in the expression, or click on the check expression checkbox, but when I have a 'only runtime evaluatable' expression I'm out of luck (which is rather often) ).  Some languages/editors have a parenthesis matching, where the ) your cursor is on causes the matching ( to get bold or flash.  Others start coloring each pair a different color, so it's easy to see them all.  Why can't TestStand do something like this????

TSparenthesis.png

 

when manipulating data between different system, JSON string are very usefull to have a standardize, simple and readable exchange format.

 

Python or LabVIEW can dump structure (dictionnaires or Cluster) to JSON and vice versa.

It can be very usefull to allow to dump a TestStand variable or container to JSON and vice versa.

 

It can be good to have also a way to have native function in string functions to read, write or add a specific value in a JSON string.

 

MaximeR

In instances of nested expressions, it would be useful to be able to press tab to indent a line. I propose inserting "n" spaces when pressing tab.

 

Coding style of course varies, but for readability, I rather dislike the following

 

Trim(Locals.SomeLocal) == "" ? (Locals.SomeLocal = "foo",Locals.AnotherLocal = "bar", Locals.SomethingOrRather = "zoo") : False

 ...and much prefer this styling:

 

Trim(Locals.SomeLocal) == "" ? (
                Locals.SomeLocal = "foo",
                Locals.AnotherLocal = "bar",
                Locals.SomethingOrRather = "zoo" ) : False

...but at present the latter is tedious because one has to insert a lot of whitespace manually or worse yet, use another text editor and paste it into TestStand. It would be nice if TestStand's expression editor supported this basic feature available in almost every text editor or IDE.

 

Thanks,

 

Mr. Jim

 

 

 

The settings field can easily become too long to see every active option and there's not necesarily any consistency between steps if they have differing options. What I mean by that is if you only set the "Do Not Record Result" (my favorite) option in one step, it will be on the left of the settings field. But if you now set several options on another step, the settings are not lined up so that it becomes hard to see at a quick glance which steps I forgot to not record (because TS still doesn't default to not recording steps). You have to analyze the settings line for each step.

Current settings.PNG

 

I propose something more graphical and ordered. Here's my idea of at least ordered. The text could be replaced with icons representing each setting.

Ordered settings.PNG

 

Then it would be graphical, ordered, and concise. What more can you ask for?

When monitoring values within a loop in TestStand, it is often desired to only record step failure results.  It would be useful to have a "Result Recording Option" of "Enabled On Step Failure":

 

TestStand Idea Exchange - Enable Result Recording On Step Failure.png

 

This is possible through various means (SequenceFilePostResultListEntry callbacks and other custom code).  However, I believe this would simplify TestStand sequence development significantly.

It would be nice to be able to "fold" control flow blocks (like if - else -end, while - end etc.). Despite the vertical lines connecting the control flow steps on the same level, it is sometimes very hard to find where a long control block actually ends or what the condition for the "end" is you are currently looking at.

 

In such cases it would be helpful, if the entire control flow block could be hidden under its first line, tree-view like with a +/- icon to show/hide the interior of the block.

 

Regards

 

Peter

I just switched from TS2019 to TS2023. I am not finding a way to configure the TS editor, witch is a hard to orientate flash of white and black screen. The color separation of the different panes, icons, step colors, fields  and  menues is not given and there are no clearly visible frames distinguished by backcolors. Working with this new GUI is tedious and not suitable, not suporting a rapid development idea. The attention of development shold be by the code and not by  the absorbing search and brain consuming editor.  How can I use the old 2019 condition gain? Could you please change this in the NEXT Teststand version?

TestStand File Diff and Merge Utility is not very useful for code reviews on its own.  It seems adequate for notifying the user that a sequence was added, however from the tool itself the user cannot actually review the newly added or removed sequence's contents.  Why is there no + on the item tree to go deeper.

 

Alternatively:

If I have to right-click a sequence and select "Go to location" then why bother with the separate tool to begin with?  Why isn't the diff utility integrated into TestStand's sequence editor itself?  Seems like a side-by-side comparison within Sequence Editor would allow a reviewer to poke and prod around all the hidden settings that are often missed using the existing utility.

 

The built-in Wait step currently causes TestStand to simply stop at that step until the specified period has elapsed. For steps longer than a few seconds, it would be nice to have some sort of indicator to show how much time is left to wait (and to show that the computer hasn't locked up on those waits that are more than 15 seconds).

 

It would be really nice to have a check box option to show some sort of wait indicator, even if it was simply using the progress indicator in the lower right corner of the screen (something that simple could even just always be enabled).

 

On a related note, could the progress bar be made wider so that there is more resolution as to how much progress has been made? If there was a ten minute wait for something, the bar would be moving very slowly and hard to tell progression was being made.

Hi,
I would like to show the following problem with the Update Custom Data Type from Cluster tool when updating TestStand container type definition based on LabVIEW cluster.

 

TestStand creates new container type definition according to the LabVIEW cluster items order. The problem apears after you create the TestStand type definition and then reaorder LabVIEW cluster. After this change in LabVIEW, TestStand will not properlly reorder items in its definition. So for example:

  1. We have LabVIEW cluster { 1My String, 2My Numeric, 3My Boolean },
  2. Then we create TestStand type from it and we have { 1My_String, 2My_Numeric, 3My_Boolean},
  3. Now, we change order in LabVIEW { 3My Boolean, 1My String, 2My Numeric },
  4. TestStand do not see change,
  5. Then we add new item in LabVIEW { 3My Boolean, This is new, 1My String, 2My Numeric },
  6. Update in TestStand will be { This_is_new, 1My_String, 2My_Numeric, 3My_Boolean}.

 

So at the end we have:

  • in LabVIEW : { 3My Boolean, This is new, 1My String, 2My Numeric },
  • in TestStand : { This_is_new, 1My_String, 2My_Numeric, 3My_Boolean}.

 

IMO items order can be sometimes (if not always) important part of good style. That's why I would like to suggest to update also items order if you select Force Exact Match.

I'm taking a bunch of steps and trying to put a "If" flow control step around them. 

Kinda like this:

TS_StartIf.png

 

But what I end up with is just a If/End statement in the middle of the steps that I selected (well, after the first step in the selection)

 

TS_ResultsIf.png

 

What I would have liked to see is this:

 

TS_wantedIf.png

 

Whare the If/End wraps the steps that I selected.

I don't quite know how best to handle the situation where the steps you have selected are not sequential (there's an unselected step in the middle), but that could probably just behave how it is now.

 

I think that this simple change to the sequence file callbacks dialog would make it far more simple and intuitive.

 

new:

 newcallbacks.png

 

current:

 

callbacksDialog.png

Static enumeration value in a sequence call must be stated as <Enum(String enumType, [String/Number value])>. Please make it possible to select the enumeration directly.

 

 
 

When using the TestStand API, I always find myself switching back and forth between TestStand and the TestStand reference help.  While the intellisense function help is usually enough, many times I like seeing the more detailed information in the help.  I would really like to have the option of displaying context specific help in a TestStand pane, similar to the context help window in LabVIEW.

 

This pane could dynamically update to display function information when using expressions, or show general information about the active pane or dialog (for newer users).  Much of the linking for the second case is already done, since the F1 key will pull up relevant help for the active pane currently.

 

TestStand context help pane.png

For some reason I was certain this was already in the idea exchange, but I couldn't find it -- so I'll post it.

 

Select Case structures are frustratingly difficult to use if you want one case to support multiple values.

 

In text languages you can often do something like

 

Switch (Foo) {

Case 1:

execute this code;

Case 2:

execute this code;

Case 3:

Case 4:

Case 5:

execute this code;

Case 6:

execute this code;

Default:

execute this code;

}

 

Notice that the case for 3,4,5 is all the same, and I just need to put it in place once.

TestStand can't do this.  You need to do something like this:

how to do select case on multiple values

which is horribly difficult to write, maintain, and understand what is happening.  It would be MUCH easier if select case on multiple values worked like this:

SelectCaseImplementA.png

where it looks just like other text based languages, although it takes up quite a bit of realestate on the screen.

or maybe something like this:

SelectCaseImplementB.png

where I can just type in a comma separated list of allowed values.  The similarity with text based languages disappears here, but it is much smaller on screen (but notice how it shows nicely in the description field) and lines up better with LabVIEW notation.

 

 

Note: LabVIEW already supports doing this, and also supports ranges of values (eg 3, 5..10, 12 for numerics) which would also be nice, and also supports case sensitive and insensitive comparison for cases.